package StudentManager;
/*
1.用输出语句完成主界面编写
2.用scanner实现键盘录入数据
3.用switch语句完成操作系统的选择
4.用循环完成再次回到主界面

添加学生
定义一个方法
1.显示提示信息
2.键盘录入信息
3.创建学生对象，将录入信息赋值给学生对象
4.将学生对象添加到集合中
5.显示添加成功提示
调用方法
 */
import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
    public static void main(String[] args) {
        //创建一个集合用于存储学生数据
        ArrayList<Student> array=new ArrayList<Student>();

        //4.用循环完成再次回到主界面
        while(true) {
            //1.用输出语句完成主界面编写
            System.out.println("-------欢迎来学生管理系统-------");
            System.out.println("1.添加学生");
            System.out.println("2.删除学生");
            System.out.println("3.修改学生");
            System.out.println("4.查看所有学生学生");
            System.out.println("5.退出");
            System.out.println("请输入你的选择");

            //2.用scanner实现键盘录入数据
            Scanner sc = new Scanner(System.in);
            int choose = sc.nextInt();

            //3.用switch语句完成操作系统的选择
            switch (choose) {
                case 1:
                    //添加学生
                    AddStudent(array);
                    break;
                case 2:
                    //删除学生
                    DeleteStudent(array);
                    break;
                case 3:
                    //修改学生
                    ChangeStudent(array);
                    break;
                case 4:
                    //查看所有学生学生
                    ShowStudent(array);
                    break;
                case 5:
                    //退出
                    //不会返回主界面
                    System.out.println("感谢使用！");
                    //break;退出后仍会返回主界面
                    System.exit(0);//JVM退出

            }
        }

    }

    public static void AddStudent(ArrayList<Student> arrayStudent){
        //键盘录入信息
        Scanner sc=new Scanner(System.in);

        //为了使sid在while外面能访问，将sid定义在循环外
        String sid;
        //为了使程序回到这里，我们使用一个循环来实现
        while(true){
            System.out.println("请输入学生学号：");
            sid=sc.nextLine();

            boolean flag=IsUsed(arrayStudent,sid);
            if (flag){
                System.out.println("学号已经被使用，请重新输入");
            }else{
                break;//学号未被使用，退出循环
            }
        }

        System.out.println("请输入学生姓名：");
        String name=sc.nextLine();
        System.out.println("请输入学生年龄：");
        String age=sc.nextLine();
        System.out.println("请输入学生地址：");
        String address=sc.nextLine();

        //创建学生对象，并赋值
        Student s=new Student(sid,name,age,address);
        //将学生对象添加到集合中
        arrayStudent.add(s);
        //输出添加成功
        System.out.println("添加学生成功！");
    }

    public static boolean IsUsed(ArrayList<Student> arrayStudent,String sid){
        //如果学号与集合中莫个相同，返回true；反之，返回false
        boolean flag=false;

        for(int i=0;i<arrayStudent.size();i++) {
            Student s = arrayStudent.get(i);
            if(s.getSid().equals(sid)){
                flag=true;
                break;
            }
        }

        return flag;
    }

    public static void ShowStudent(ArrayList<Student> arrayStudent){
        //判断集合中是否有元素
        if(arrayStudent.size()==0){
            System.out.println("无信息，请添加信息后查询");
            return;//让程序不在执行下去
        }
        //显示表头信息
        //\t=tab
        System.out.println("学号\t\t\t姓名\t\t\t年龄\t\t\t居住地");
        //将集合中的数据，按照对应格式显示学生信息，年龄显示补充“岁”
        for (int i=0;i<arrayStudent.size();i++){
            System.out.println(
                    arrayStudent.get(i).getSid()+"\t\t\t" +
                    arrayStudent.get(i).getName()+"\t\t\t" +
                    arrayStudent.get(i).getAge()+"岁\t\t" +
                    arrayStudent.get(i).getAddress()
            );
        }
    }

    public static void DeleteStudent(ArrayList<Student> arrayStudent){
        //键盘录入要删除学生学号，显示提示信息
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要删除学生学号：");
        String sid=sc.nextLine();

        //判断学号是否存在，存在删除，不存在重新输入
        int index=-1;
        for(int i=0;i<arrayStudent.size();i++){
            Student s = arrayStudent.get(i);
            if(s.getSid().equals(sid)){
                index=i;
                break;
            }
        }
        if(index==-1){
            System.out.println("该信息不存在，请重新输入");
        }else{
            arrayStudent.remove(index);
        }

        //给出删除成功提示
        System.out.println("删除学生成功！");
    }

    public static void ChangeStudent(ArrayList<Student> arrayStudent){
        //键盘录入修改学生学号
        Scanner sc=new Scanner(System.in);

        System.out.println("请输入你要修改的学生学号：");
        String sid=sc.nextLine();

        //判断学号是否存在，存在修改，不存在重新输入
        int index=-1;
        for(int i=0;i<arrayStudent.size();i++){
            Student s = arrayStudent.get(i);
            if(s.getSid().equals(sid)){
                index=i;
                break;
            }
        }
        if(index==-1){
            System.out.println("该信息不存在，请重新输入");
        }else{
            //键盘录入要修改的学生信
            System.out.println("请输入学生新姓名：");
            String name=sc.nextLine();
            System.out.println("请输入学生新年龄：");
            String age=sc.nextLine();
            System.out.println("请输入学生新地址：");
            String address=sc.nextLine();
            //创建学生对象
            Student s=new Student(sid,name,age,address);
            arrayStudent.set(index,s);
        }

        //提示修改成功
        System.out.println("修改成功");
    }
}
